
/**
 * Write a description of class KassenDB here.
 * 
 * @author Lennard Kerber
 * @version 0.01
 */

import java.sql.*;


public class KassenDB
{
    // instance variables - replace the example below with your own
    private Connection verbindung = null;
    String db    = "jdbc:mysql://localhost/Kasse";
    String user  = "root";
    String pw    = "";

    /**
     * Constructor for objects of class KassenDB
     */
    public KassenDB()
    {
        // überprüft, ob die notwendigen Treiber gefunden werden
               
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            System.err.println(" Kann Treiber nicht laden: "+e);
        }
        
        
        
    }

    /**
     * Öffnet die Verbindung zur Datenbank
     * 
     */
    private void open()
    {
        try {
            verbindung = DriverManager.getConnection(db,user,pw);
        } catch (Exception e) {
            System.err.println(" Keine Verbindung: "+e);
        }
    }
    /**
     * Schließt die Verbindung zur Datenbank
     * 
     */
    
    private void close()
    {
        try {
            verbindung.close();
        } catch (Exception e) {
            System.err.println(" Die Verbindung kann nicht geschlossen werden: "+e);
        }
    }
    
    /**
     * Sucht einen Artikel für eine EAN
     * 
     */
    
    public Artikel getArtikel(String ean)
    {
        Artikel artikel = new Artikel();
        this.open();
        
        Statement stm = null;
        try {
            stm = verbindung.createStatement();
        } catch (Exception e) {
            System.err.println(" SQL Statement kann nicht erstellt werden: "+e);
        }
        
        String sql = "SELECT * FROM Artikel WHERE EAN = '"+ean+"'";
        ResultSet ergebnis = null;
        try {
            ergebnis = stm.executeQuery(sql);
        } catch (Exception e) {
            System.err.println(" SQL Abfrage für: ->"+ean+"<- kann nicht durchgeführt werden: "+e);
        }
        
        try {
            if (ergebnis.next() == true){
                artikel = new Artikel(ergebnis.getString("Name"),
                                      ergebnis.getString("EAN"),
                                      ergebnis.getDouble("Preis"),
                                      ergebnis.getString("Steuer"));
            } else {
                artikel = null;  
            }
        } catch (Exception e) {
            System.err.println(" SQL Ergebnis kann nicht ausgelesen werden: "+e);
            artikel = null;
        }
        
        this.close();
        return artikel;
    }
    /**
     * Sucht einen MWST für A oder B
     * 
     */
    
    public double getMWST(String c)
    {
        double mwst = 0.0;
        this.open();
        
        Statement stm = null;
        try {
            stm = verbindung.createStatement();
        } catch (Exception e) {
            System.err.println(" SQL Statement kann nicht erstellt werden: "+e);
        }
        
        String sql = "SELECT * FROM steuer WHERE Name = '"+c+"'";
        ResultSet ergebnis = null;
        try {
            ergebnis = stm.executeQuery(sql);
        } catch (Exception e) {
            System.err.println(" SQL Abfrage für: ->"+c+"<- kann nicht durchgeführt werden: "+e);
        }
        
        try {
            if (ergebnis.next() == true){
                mwst = ergebnis.getDouble("Steuersatz");
            } else {
                mwst = 0.0;  
            }
        } catch (Exception e) {
            System.err.println(" SQL Ergebnis kann nicht ausgelesen werden: "+e);
            mwst = 0.0;
        }
        
        this.close();
        return mwst;
    }
    
    
}
